home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / liberatr.c < prev    next >
C/C++ Source or Header  |  2000-04-04  |  18KB  |  426 lines

  1. /***************************************************************************
  2.  
  3.     Liberator Memory Map (for the main set, the other one is rearranged)
  4.      (from the schematics/manual)
  5.  
  6.     HEX        R/W   D7 D6 D5 D4 D3 D2 D2 D0  function
  7.     ---------+-----+------------------------+------------------------
  8.     0000             D  D  D  D  D  D  D  D   XCOORD
  9.     0001             D  D  D  D  D  D  D  D   YCOORD
  10.     0002             D  D  D                  BIT MODE DATA
  11.     ---------+-----+------------------------+------------------------
  12.     0003-033F        D  D  D  D  D  D  D  D   Working RAM
  13.     0340-3D3F        D  D  D  D  D  D  D  D   Screen RAM
  14.     3D40-3FFF        D  D  D  D  D  D  D  D   Working RAM
  15.     ---------+-----+------------------------+------------------------
  16.     4000-403F    R   D  D  D  D  D  D  D  D   EARD*  read from non-volatile memory
  17.     ---------+-----+------------------------+------------------------
  18.     5000         R                        D   coin AUX   (CTRLD* set low)
  19.     5000         R                     D      coin LEFT  (CTRLD* set low)
  20.     5000         R                  D         coin RIGHT (CTRLD* set low)
  21.     5000         R               D            SLAM       (CTRLD* set low)
  22.     5000         R            D               SPARE      (CTRLD* set low)
  23.     5000         R         D                  SPARE      (CTRLD* set low)
  24.     5000         R      D                     COCKTAIL   (CTRLD* set low)
  25.     5000         R   D                        SELF-TEST  (CTRLD* set low)
  26.     5000         R               D  D  D  D   HDIR   (CTRLD* set high)
  27.     5000         R   D  D  D  D               VDIR   (CTRLD* set high)
  28.     ---------+-----+------------------------+------------------------
  29.     5001         R                        D   SHIELD 2
  30.     5001         R                     D      SHIELD 1
  31.     5001         R                  D         FIRE 2
  32.     5001         R               D            FIRE 1
  33.     5001         R            D               SPARE      (CTRLD* set low)
  34.     5001         R         D                  START 2
  35.     5001         R      D                     START 1
  36.     5001         R   D                        VBLANK
  37.     ---------+-----+------------------------+------------------------
  38.     6000-600F    W               D  D  D  D   base_ram*
  39.     6200-621F    W   D  D  D  D  D  D  D  D   COLORAM*
  40.     6400         W                            INTACK*
  41.     6600         W               D  D  D  D   EARCON
  42.     6800         W   D  D  D  D  D  D  D  D   STARTLG (planet frame)
  43.     6A00         W                            WDOG*
  44.     ---------+-----+------------------------+------------------------
  45.     6C00         W            D               START LED 1
  46.     6C01         W            D               START LED 2
  47.     6C02         W            D               TBSWP*
  48.     6C03         W            D               SPARE
  49.     6C04         W            D               CTRLD*
  50.     6C05         W            D               COINCNTRR
  51.     6C06         W            D               COINCNTRL
  52.     6C07         W            D               PLANET
  53.     ---------+-----+------------------------+------------------------
  54.     6E00-6E3F    W   D  D  D  D  D  D  D  D   EARWR*
  55.     7000-701F        D  D  D  D  D  D  D  D   IOS2* (Pokey 2)
  56.     7800-781F        D  D  D  D  D  D  D  D   IOS1* (Pokey 1)
  57.     8000-EFFF    R   D  D  D  D  D  D  D  D   ROM
  58.     -----------------------------------------------------------------
  59.  
  60.  
  61.  Dip switches at D4 on the PCB for play options: (IN2)
  62.  
  63. LSB  D1   D2   D3   D4   D5   D6   MSB
  64. SW8  SW7  SW6  SW5  SW4  SW3  SW2  SW1    Option
  65. -------------------------------------------------------------------------------------
  66. Off  Off                                 4 ships per game   <-
  67. On   Off                                 5 ships per game
  68. Off  On                                  6 ships per game
  69. On   On                                  8 ships per game
  70. -------------------------------------------------------------------------------------
  71.           Off  Off                       Bonus ship every 15000 points
  72.           On   Off                       Bonus ship every 20000 points   <-
  73.           Off  On                        Bonus ship every 25000 points
  74.           On   On                        Bonus ship every 30000 points
  75. -------------------------------------------------------------------------------------
  76.                     On   Off             Easy game play
  77.                     Off  Off             Normal game play   <-
  78.                     Off  On              Hard game play
  79. -------------------------------------------------------------------------------------
  80.                                 X    X   Not used
  81. -------------------------------------------------------------------------------------
  82.  
  83.  
  84.  Dip switches at A4 on the PCB for price options: (IN3)
  85.  
  86. LSB  D1   D2   D3   D4   D5   D6   MSB
  87. SW8  SW7  SW6  SW5  SW4  SW3  SW2  SW1    Option
  88. -------------------------------------------------------------------------------------
  89. Off  Off                                 Free play
  90. On   Off                                 1 coin for 2 credits
  91. Off  On                                  1 coin for 1 credit   <-
  92. On   On                                  2 coins for 1 credit
  93. -------------------------------------------------------------------------------------
  94.           Off  Off                       Right coin mech X 1   <-
  95.           On   Off                       Right coin mech X 4
  96.           Off  On                        Right coin mech X 5
  97.           On   On                        Right coin mech X 6
  98. -------------------------------------------------------------------------------------
  99.                     Off                  Left coin mech X 1    <-
  100.                     On                   Left coin mech X 2
  101. -------------------------------------------------------------------------------------
  102.                          Off  Off  Off   No bonus coins        <-
  103.                          Off  On   Off   For every 4 coins inserted, game logic
  104.                                           adds 1 more coin
  105.  
  106.                          On   On   Off   For every 4 coins inserted, game logic
  107.                                           adds 2 more coin
  108.                          Off  Off  On    For every 5 coins inserted, game logic
  109.                                           adds 1 more coin
  110.                          On   Off  On    For every 3 coins inserted, game logic
  111.                                           adds 1 more coin
  112.                           X   On   On    No bonus coins
  113. -------------------------------------------------------------------------------------
  114. <-  = Manufacturer's suggested settings
  115.  
  116.  
  117. Note:
  118. ----
  119.  
  120. The loop at $cf60 should count down from Y=0 instead of Y=0xff.  Because of this the first
  121. four leftmost pixels of each row are not cleared.  This bug is masked by the visible area
  122. covering up the offending pixels.
  123.  
  124. ******************************************************************************************/
  125.  
  126. #include "driver.h"
  127. #include "machine/atari_vg.h"
  128.  
  129.  
  130. extern UINT8 *liberatr_base_ram;
  131. extern UINT8 *liberatr_planet_frame;
  132. extern UINT8 *liberatr_planet_select;
  133. extern UINT8 *liberatr_ctrld;
  134. extern UINT8 *liberatr_x;
  135. extern UINT8 *liberatr_y;
  136.  
  137.  
  138. /* in machine */
  139. READ_HANDLER( liberatr_input_port_0_r ) ;
  140. WRITE_HANDLER( liberatr_led_w );
  141. WRITE_HANDLER( liberatr_coin_counter_w );
  142.  
  143. /* in vidhrdw */
  144. extern unsigned char *liberatr_bitmapram;
  145.  
  146. int  liberatr_vh_start(void);
  147. void liberatr_vh_stop(void);
  148. void liberatr_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  149. WRITE_HANDLER( liberatr_colorram_w ) ;
  150. WRITE_HANDLER( liberatr_bitmap_w );
  151. READ_HANDLER( liberatr_bitmap_xy_r );
  152. WRITE_HANDLER( liberatr_bitmap_xy_w );
  153.  
  154.  
  155. static struct MemoryReadAddress liberatr_readmem[] =
  156. {
  157.     { 0x0002, 0x0002, liberatr_bitmap_xy_r },
  158.     { 0x0000, 0x3fff, MRA_RAM },    /* overlapping for my convenience */
  159.     { 0x4000, 0x403f, atari_vg_earom_r },
  160.     { 0x5000, 0x5000, liberatr_input_port_0_r },
  161.     { 0x5001, 0x5001, input_port_1_r },
  162.     { 0x7000, 0x701f, pokey2_r },
  163.     { 0x7800, 0x781f, pokey1_r },
  164.     { 0x8000, 0xefff, MRA_ROM },
  165.     { 0xfffa, 0xffff, MRA_ROM },
  166.     { -1 }    /* end of table */
  167. };
  168.  
  169. static struct MemoryReadAddress liberat2_readmem[] =
  170. {
  171.     { 0x0002, 0x0002, liberatr_bitmap_xy_r },
  172.     { 0x0000, 0x3fff, MRA_RAM },    /* overlapping for my convenience */
  173.     { 0x4000, 0x4000, liberatr_input_port_0_r },
  174.     { 0x4001, 0x4001, input_port_1_r },
  175.     { 0x4800, 0x483f, atari_vg_earom_r },
  176.     { 0x5000, 0x501f, pokey2_r },
  177.     { 0x5800, 0x581f, pokey1_r },
  178.     { 0x6000, 0xbfff, MRA_ROM },
  179.     { 0xfffa, 0xffff, MRA_ROM },
  180.     { -1 }    /* end of table */
  181. };
  182.  
  183.  
  184. static struct MemoryWriteAddress liberatr_writemem[] =
  185. {
  186.     { 0x0002, 0x0002, liberatr_bitmap_xy_w },
  187.     { 0x0000, 0x3fff, liberatr_bitmap_w, &liberatr_bitmapram },    /* overlapping for my convenience */
  188.     { 0x6000, 0x600f, MWA_RAM, &liberatr_base_ram },
  189.     { 0x6200, 0x621f, liberatr_colorram_w },
  190.     { 0x6400, 0x6400, MWA_NOP },
  191.     { 0x6600, 0x6600, atari_vg_earom_ctrl_w },
  192.     { 0x6800, 0x6800, MWA_RAM, &liberatr_planet_frame },
  193.     { 0x6a00, 0x6a00, watchdog_reset_w },
  194.     { 0x6c00, 0x6c01, liberatr_led_w },
  195.     { 0x6c04, 0x6c04, MWA_RAM, &liberatr_ctrld },
  196.     { 0x6c05, 0x6c06, liberatr_coin_counter_w },
  197.     { 0x6c07, 0x6c07, MWA_RAM, &liberatr_planet_select },
  198.     { 0x6e00, 0x6e3f, atari_vg_earom_w },
  199.     { 0x7000, 0x701f, pokey2_w },
  200.     { 0x7800, 0x781f, pokey1_w },
  201.     { 0x8000, 0xefff, MWA_ROM },
  202.     { 0xfffa, 0xffff, MWA_ROM },
  203.  
  204.     { 0x0000, 0x0000, MWA_RAM, &liberatr_x },    /* just here to assign pointer */
  205.     { 0x0001, 0x0001, MWA_RAM, &liberatr_y },    /* just here to assign pointer */
  206.     { -1 }    /* end of table */
  207. };
  208.  
  209. static struct MemoryWriteAddress liberat2_writemem[] =
  210. {
  211.     { 0x0002, 0x0002, liberatr_bitmap_xy_w },
  212.     { 0x0000, 0x3fff, liberatr_bitmap_w, &liberatr_bitmapram },    /* overlapping for my convenience */
  213.     { 0x4000, 0x400f, MWA_RAM, &liberatr_base_ram },
  214.     { 0x4200, 0x421f, liberatr_colorram_w },
  215.     { 0x4400, 0x4400, MWA_NOP },
  216.     { 0x4600, 0x4600, atari_vg_earom_ctrl_w },
  217.     { 0x4800, 0x4800, MWA_RAM, &liberatr_planet_frame },
  218.     { 0x4a00, 0x4a00, watchdog_reset_w },
  219.     { 0x4c00, 0x4c01, liberatr_led_w },
  220.     { 0x4c04, 0x4c04, MWA_RAM, &liberatr_ctrld },
  221.     { 0x4c05, 0x4c06, liberatr_coin_counter_w },
  222.     { 0x4c07, 0x4c07, MWA_RAM, &liberatr_planet_select },
  223.     { 0x4e00, 0x4e3f, atari_vg_earom_w },
  224.     { 0x5000, 0x501f, pokey2_w },
  225.     { 0x5800, 0x581f, pokey1_w },
  226.     //{ 0x6000, 0x601f, pokey1_w }, /* bug ??? */
  227.     { 0x6000, 0xbfff, MWA_ROM },
  228.     { 0xfffa, 0xffff, MWA_ROM },
  229.  
  230.     { 0x0000, 0x0000, MWA_RAM, &liberatr_x },    /* just here to assign pointer */
  231.     { 0x0001, 0x0001, MWA_RAM, &liberatr_y },    /* just here to assign pointer */
  232.     { -1 }    /* end of table */
  233. };
  234.  
  235.  
  236.  
  237. INPUT_PORTS_START( liberatr )
  238.     PORT_START            /* IN0 - $5000 */
  239.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
  240.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 )
  241.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 )
  242.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_TILT )
  243.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  244.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  245.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Cabinet ) )
  246.     PORT_DIPSETTING(    0x40, DEF_STR( Upright ) )
  247.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  248.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  249.  
  250.     PORT_START            /* IN1 - $5001 */
  251.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
  252.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
  253.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 )
  254.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
  255.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  256.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
  257.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
  258.     PORT_BIT( 0x80, IP_ACTIVE_HIGH,IPT_VBLANK )
  259.  
  260.     PORT_START            /* IN2  -  Game Option switches DSW @ D4 on PCB */
  261.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  262.     PORT_DIPSETTING(    0x00, "4" )
  263.     PORT_DIPSETTING(    0x01, "5" )
  264.     PORT_DIPSETTING(    0x02, "6" )
  265.     PORT_DIPSETTING(    0x03, "8" )
  266.     PORT_DIPNAME( 0x0C, 0x04, DEF_STR( Bonus_Life ) )
  267.     PORT_DIPSETTING(    0x00, "15000" )
  268.     PORT_DIPSETTING(    0x04, "20000" )
  269.     PORT_DIPSETTING(    0x08, "25000" )
  270.     PORT_DIPSETTING(    0x0C, "30000" )
  271.     PORT_DIPNAME( 0x30, 0x00, DEF_STR( Difficulty ) )
  272.     PORT_DIPSETTING(    0x10, "Easy" )
  273.     PORT_DIPSETTING(    0x00, "Normal" )
  274.     PORT_DIPSETTING(    0x20, "Hard" )
  275.     PORT_DIPSETTING(    0x30, "???" )
  276.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
  277.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  278.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  279.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
  280.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  281.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  282.  
  283.     PORT_START            /* IN3  -  Pricing Option switches DSW @ A4 on PCB */
  284.     PORT_DIPNAME( 0x03, 0x02, DEF_STR( Coinage ) )
  285.     PORT_DIPSETTING(    0x03, DEF_STR( 2C_1C ) )
  286.     PORT_DIPSETTING(    0x02, DEF_STR( 1C_1C ) )
  287.     PORT_DIPSETTING(    0x01, DEF_STR( 1C_2C ) )
  288.     PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
  289.     PORT_DIPNAME( 0x0c, 0x00, "Right Coin" )
  290.     PORT_DIPSETTING (   0x00, "*1" )
  291.     PORT_DIPSETTING (   0x04, "*4" )
  292.     PORT_DIPSETTING (   0x08, "*5" )
  293.     PORT_DIPSETTING (   0x0c, "*6" )
  294.     PORT_DIPNAME( 0x10, 0x00, "Left Coin" )
  295.     PORT_DIPSETTING (   0x00, "*1" )
  296.     PORT_DIPSETTING (   0x10, "*2" )
  297.     /* TODO: verify the following settings */
  298.     PORT_DIPNAME( 0xe0, 0x00, "Bonus Coins" )
  299.     PORT_DIPSETTING (   0x00, "None" )
  300.     PORT_DIPSETTING (   0x80, "1 each 5" )
  301.     PORT_DIPSETTING (   0x40, "1 each 4 (+Demo)" )
  302.     PORT_DIPSETTING (   0xa0, "1 each 3" )
  303.     PORT_DIPSETTING (   0x60, "2 each 4 (+Demo)" )
  304.     PORT_DIPSETTING (   0x20, "1 each 2" )
  305.     PORT_DIPSETTING (   0xc0, "Freeze Mode" )
  306.     PORT_DIPSETTING (   0xe0, "Freeze Mode" )
  307.  
  308.     PORT_START    /* IN4 - FAKE - overlaps IN0 in the HW */
  309.     PORT_ANALOG( 0x0f, 0x0, IPT_TRACKBALL_X, 30, 10, 0, 0 )
  310.  
  311.     PORT_START    /* IN5 - FAKE - overlaps IN0 in the HW */
  312.     PORT_ANALOG( 0x0f, 0x0, IPT_TRACKBALL_Y, 30, 10, 0, 0 )
  313. INPUT_PORTS_END
  314.  
  315.  
  316.  
  317. static struct POKEYinterface pokey_interface =
  318. {
  319.     2,                /* 2 chips */
  320.     FREQ_17_APPROX,    /* 1.7 Mhz */
  321.     { 50, 50 },
  322.     /* The 8 pot handlers */
  323.     { 0, 0 },
  324.     { 0, 0 },
  325.     { 0, 0 },
  326.     { 0, 0 },
  327.     { 0, 0 },
  328.     { 0, 0 },
  329.     { 0, 0 },
  330.     { 0, 0 },
  331.     /* The allpot handler */
  332.     { input_port_3_r, input_port_2_r }
  333. };
  334.  
  335.  
  336. #define MACHINE_DRIVER(NAME)                            \
  337. static struct MachineDriver machine_driver_##NAME =        \
  338. {                                                        \
  339.     /* basic machine hardware */                        \
  340.     {                                                    \
  341.         {                                                \
  342.             CPU_M6502,                                    \
  343.             1250000,        /* 1.25 Mhz */                \
  344.             NAME##_readmem,NAME##_writemem,0,0,            \
  345.             interrupt, 4                                \
  346.         }                                                \
  347.     },                                                    \
  348.     60, DEFAULT_REAL_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */    \
  349.     1,      /* single CPU, no need for interleaving */    \
  350.     0,                                                    \
  351.                                                         \
  352.     /* video hardware */                                \
  353.     256, 256, { 8, 247, 13, 244 },                        \
  354.     0,      /* no gfxdecodeinfo - bitmapped display */    \
  355.     32, 0,                                                \
  356.     0,                                                    \
  357.                                                         \
  358.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,            \
  359.     0,                                                    \
  360.     liberatr_vh_start,                                    \
  361.     liberatr_vh_stop,                                    \
  362.     liberatr_vh_screenrefresh,                            \
  363.                                                         \
  364.     /* sound hardware */                                \
  365.     0,0,0,0,                                            \
  366.     {                                                    \
  367.         {                                                \
  368.             SOUND_POKEY,                                \
  369.             &pokey_interface                            \
  370.         }                                                \
  371.     },                                                    \
  372.                                                         \
  373.     atari_vg_earom_handler                                \
  374. };
  375.  
  376. MACHINE_DRIVER(liberatr)
  377. MACHINE_DRIVER(liberat2)
  378.  
  379.  
  380. /***************************************************************************
  381.  
  382.   Game driver(s)
  383.  
  384. ***************************************************************************/
  385.  
  386. ROM_START( liberatr )
  387.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code and data  */
  388.     ROM_LOAD( "136012.206",   0x8000, 0x1000, 0x1a0cb4a0 )
  389.     ROM_LOAD( "136012.205",   0x9000, 0x1000, 0x2f071920 )
  390.     ROM_LOAD( "136012.204",   0xa000, 0x1000, 0xbcc91827 )
  391.     ROM_LOAD( "136012.203",   0xb000, 0x1000, 0xb558c3d4 )
  392.     ROM_LOAD( "136012.202",   0xc000, 0x1000, 0x569ba7ea )
  393.     ROM_LOAD( "136012.201",   0xd000, 0x1000, 0xd12cd6d0 )
  394.     ROM_LOAD( "136012.200",   0xe000, 0x1000, 0x1e98d21a )
  395.     ROM_RELOAD(                  0xf000, 0x1000 )        /* for interrupt/reset vectors  */
  396.  
  397.     ROM_REGION( 0x4000, REGION_GFX1 )    /* planet image, used at runtime */
  398.     ROM_LOAD( "136012.110",   0x0000, 0x1000, 0x6eb11221 )
  399.     ROM_LOAD( "136012.107",   0x1000, 0x1000, 0x8a616a63 )
  400.     ROM_LOAD( "136012.108",   0x2000, 0x1000, 0x3f8e4cf6 )
  401.     ROM_LOAD( "136012.109",   0x3000, 0x1000, 0xdda0c0ef )
  402. ROM_END
  403.  
  404. ROM_START( liberat2 )
  405.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code and data  */
  406.     ROM_LOAD( "l6.bin",       0x6000, 0x1000, 0x78093d06 )
  407.     ROM_LOAD( "l5.bin",       0x7000, 0x1000, 0x988db636 )
  408.     ROM_LOAD( "l4.bin",       0x8000, 0x1000, 0xec114540 )
  409.     ROM_LOAD( "l3.bin",       0x9000, 0x1000, 0x184c751f )
  410.     ROM_LOAD( "l2.bin",       0xa000, 0x1000, 0xc3f61f88 )
  411.     ROM_LOAD( "l1.bin",       0xb000, 0x1000, 0xef6e9f9e )
  412.     ROM_RELOAD(                  0xf000, 0x1000 )        /* for interrupt/reset vectors  */
  413.  
  414.     ROM_REGION( 0x4000, REGION_GFX1 )    /* planet image, used at runtime */
  415.     ROM_LOAD( "136012.110",   0x0000, 0x1000, 0x6eb11221 )
  416.     ROM_LOAD( "136012.107",   0x1000, 0x1000, 0x8a616a63 )
  417.     ROM_LOAD( "136012.108",   0x2000, 0x1000, 0x3f8e4cf6 )
  418.     ROM_LOAD( "136012.109",   0x3000, 0x1000, 0xdda0c0ef )
  419. ROM_END
  420.  
  421.  
  422.  
  423. GAMEX( 1982, liberatr, 0,        liberatr, liberatr, 0, ROT0, "Atari", "Liberator (set 1)", GAME_NO_COCKTAIL )
  424. GAMEX( 1982, liberat2, liberatr, liberat2, liberatr, 0, ROT0, "Atari", "Liberator (set 2)", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
  425.  
  426.